showInWords :: Int -> String
showInWords 1 	= "One"
showInWords 2 	= "Two"
showInWords 3 	= "Three"
showInWords 4 	= "Four"
showInWords 5 	= "Five"
showInWords 6 	= "Six"
showInWords 7 	= "Seven"
showInWords 8 	= "Eight"
showInWords 9 	= "Nine"
showInWords 10 	= "Ten"
showInWords 11 	= "Eleven"
showInWords 12 	= "Twelve"
showInWords 13 	= "Thirteen"
showInWords 14 	= "Fourteen"
showInWords 15 	= "Fifteen"
showInWords 16 	= "Sixteen"
showInWords 17 	= "Seventeen"
showInWords 18 	= "Eighteen"
showInWords 19 	= "Nineteen"
showInWords 20 	= "Twenty"
showInWords 30 	= "Thirty"
showInWords 40 	= "Forty"
showInWords 50 	= "Fifty"
showInWords 60 	= "Sixty"
showInWords 70 	= "Seventy"
showInWords 80 	= "Eighty"
showInWords 90 	= "Ninety"
showInWords 100 = "OneHundred"
showInWords 1000 = "OneThousand"
showInWords n
	| n `mod` 100 == 0  = showInWords ( n `div` 100 ) ++ "Hundred"
	| n > 100 			= showInWords ( n `div` 100 ) ++ "HundredAnd" ++ showInWords ( n `mod` 100)
	| n > 20			= showInWords ( (n `div` 10) * 10 ) ++ showInWords ( (n `mod` 10) )
	| otherwise = ""
	
euler_017 = sum $ map (length.showInWords) [1..1000]